package com.dollarxy.dlmall.data.component;

import com.alibaba.fastjson.JSONObject;
import com.alibaba.ocean.rawsdk.ApiExecutor;
import com.alibaba.ocean.rawsdk.client.exception.OceanException;

import com.umeng.umini.param.*;
import lombok.Data;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;



/**
 * @Description:
 * @Created: with IntelliJ IDEA.
 * @author: dennis
 * @createTime: 2022-06-27 09:39
 **/

@ConfigurationProperties(prefix = "umeng.api.wx-mini")
@Data
@Component
public class UmengWxMiniComponent {

    private String dataSourceId;
    private String ApiKey;
    private String ApiSecurity;
    private String AppKey;

    //获取应用概况数据
    public UmengUminiGetOverviewResult  umengUminiGetOverview(ApiExecutor apiExecutor,String startTime,String endTime,String dateType,String indicators) {
        UmengUminiGetOverviewParam param = new UmengUminiGetOverviewParam();
        UmengUminiGetOverviewResult result = new UmengUminiGetOverviewResult();
        // 测试环境只支持http
        // param.getOceanRequestPolicy().setUseHttps(false);
        param.setDataSourceId("626b8dbcd024421570d8f084");
        param.setFromDate(startTime);
        param.setToDate(endTime);
        param.setTimeUnit(dateType);
        param.setIndicators(indicators);
        param.setPageIndex(1);
        param.setPageSize(30);

        try {
            result = apiExecutor.execute(param);
            System.out.println(JSONObject.toJSONString(result));
        } catch (OceanException e) {
            System.out.println("errorCode=" + e.getErrorCode() + ", errorMessage=" + e.getErrorMessage());
        }
        return result;
    }


    public UmengUminiGetTotalUserResult  umengUminiGetTotalUser(ApiExecutor apiExecutor,String startTime,String endTime,String dateType,String indicators) {
        UmengUminiGetTotalUserParam param = new UmengUminiGetTotalUserParam();
        UmengUminiGetTotalUserResult result = new UmengUminiGetTotalUserResult();
        // 测试环境只支持http
        // param.getOceanRequestPolicy().setUseHttps(false);
        param.setDataSourceId("626b8dbcd024421570d8f084");
        param.setFromDate(startTime);
        param.setToDate(endTime);
        param.setPageIndex(1);
        param.setPageSize(30);

        try {
            result = apiExecutor.execute(param);
        } catch (OceanException e) {
            System.out.println("errorCode=" + e.getErrorCode() + ", errorMessage=" + e.getErrorMessage());
        }
        return result;
    }


    public UmengUminiGetEventOverviewResult  umengUminiGetEventOverview(ApiExecutor apiExecutor,String startTime,String endTime,String dateType,String indicators,String eventName) {
        UmengUminiGetEventOverviewParam param = new UmengUminiGetEventOverviewParam();
        UmengUminiGetEventOverviewResult result = new UmengUminiGetEventOverviewResult();
        // 测试环境只支持http
        // param.getOceanRequestPolicy().setUseHttps(false);
        param.setTimeUnit("day");
        param.setFromDate(startTime);
        param.setToDate(endTime);
        param.setEventName(eventName);
        param.setDataSourceId("626b8dbcd024421570d8f084");

        try {
            result = apiExecutor.execute(param);
            System.out.println(JSONObject.toJSONString(result));
        } catch (OceanException e) {
            System.out.println("errorCode=" + e.getErrorCode() + ", errorMessage=" + e.getErrorMessage());
        }
        return result;
    }

    public UmengUminiGetSharePageOverviewResult  umengUminiGetSharePageOverview(ApiExecutor apiExecutor,String startTime,String endTime,String dateType,String indicators,String eventName) {
        UmengUminiGetSharePageOverviewParam param = new UmengUminiGetSharePageOverviewParam();
        UmengUminiGetSharePageOverviewResult result = new UmengUminiGetSharePageOverviewResult();
        // 测试环境只支持http
        // param.getOceanRequestPolicy().setUseHttps(false);
        param.setDataSourceId("626b8dbcd024421570d8f084");
        param.setFromDate(startTime);
        param.setToDate(endTime);
        param.setTimeUnit("day");
        param.setPageIndex(1);
        param.setPageSize(30);
        param.setOrderBy("user");
        param.setDirection("desc");

        try {
            result = apiExecutor.execute(param);
            System.out.println(JSONObject.toJSONString(result));
        } catch (OceanException e) {
            System.out.println("errorCode=" + e.getErrorCode() + ", errorMessage=" + e.getErrorMessage());
        }
        return result;
    }


    public UmengUminiGetCustomerSourceOverviewResult  umengUminiGetCustomerSourceOverview(ApiExecutor apiExecutor,String startTime,String endTime,String dateType,String indicators,String eventName) {
        UmengUminiGetCustomerSourceOverviewParam param = new UmengUminiGetCustomerSourceOverviewParam();
        UmengUminiGetCustomerSourceOverviewResult result = new UmengUminiGetCustomerSourceOverviewResult();
        // 测试环境只支持http
        // param.getOceanRequestPolicy().setUseHttps(false);
        param.setDataSourceId("626b8dbcd024421570d8f084");
        param.setSourceType("scene");
        param.setFromDate(startTime);
        param.setToDate(endTime);
        param.setTimeUnit("day");
        param.setOrderBy("visitTimes");
        param.setDirection("desc");

        try {
            result = apiExecutor.execute(param);
            System.out.println(JSONObject.toJSONString(result));
        } catch (OceanException e) {
            System.out.println("errorCode=" + e.getErrorCode() + ", errorMessage=" + e.getErrorMessage());
        }
        return result;
    }


    public static void main(String[] args) {
        // 请替换apiKey和apiSecurity
        ApiExecutor apiExecutor = new ApiExecutor("8537907", "UZfST6nSjl");
        apiExecutor.setServerHost("gateway.open.umeng.com");

        UmengWxMiniComponent testOpenAPI = new UmengWxMiniComponent();
//        testOpenAPI.umengUminiGetOverview(apiExecutor);
    }


//    //获取页面分享概况数据
//    public void umengUminiGetSharePageOverview(ApiExecutor apiExecutor) {
//        UmengUminiGetSharePageOverviewParam param = new UmengUminiGetSharePageOverviewParam();
//        // 测试环境只支持http
//        // param.getOceanRequestPolicy().setUseHttps(false);
//        param.setDataSourceId("626b8dbcd024421570d8f084");
//        param.setFromDate("2023-01-01");
//        param.setToDate("2023-02-01");
//        param.setTimeUnit("30day");
//        param.setPageIndex(1);
//        param.setPageSize(30);
//        param.setOrderBy("user");
//        param.setDirection("desc");
//
//        try {
//            UmengUminiGetSharePageOverviewResult result = apiExecutor.execute(param);
//            System.out.println(JSONObject.toJSONString(result));
//        } catch (OceanException e) {
//            System.out.println("errorCode=" + e.getErrorCode() + ", errorMessage=" + e.getErrorMessage());
//        }
//    }
//
//    public static void main(String[] args) {
//        // 请替换apiKey和apiSecurity
//        ApiExecutor apiExecutor = new ApiExecutor("8537907", "UZfST6nSjl");
//        apiExecutor.setServerHost("gateway.open.umeng.com");
//
//        UmengWxMiniComponent testOpenAPI = new UmengWxMiniComponent();
//        testOpenAPI.umengUminiGetSharePageOverview(apiExecutor);
//    }


//    //获取分享用户列表
//    public void umengUminiGetShareUserList(ApiExecutor apiExecutor) {
//        UmengUminiGetShareUserListParam param = new UmengUminiGetShareUserListParam();
//        // 测试环境只支持http
//        // param.getOceanRequestPolicy().setUseHttps(false);
//        param.setDataSourceId("626b8dbcd024421570d8f084");
//        param.setTimeUnit("30day");
//        param.setFromDate("2023-01-01");
//        param.setToDate("2023-02-01");
//        param.setOrderBy("count");
//        param.setDirection("desc");
//        param.setPageIndex(1);
//        param.setPageSize(30);
//
//        try {
//            UmengUminiGetShareUserListResult result = apiExecutor.execute(param);
//            System.out.println(JSONObject.toJSONString(result));
//        } catch (OceanException e) {
//            System.out.println("errorCode=" + e.getErrorCode() + ", errorMessage=" + e.getErrorMessage());
//        }
//    }
//
//    public static void main(String[] args) {
//        // 请替换apiKey和apiSecurity
//        ApiExecutor apiExecutor = new ApiExecutor("8537907", "UZfST6nSjl");
//        apiExecutor.setServerHost("gateway.open.umeng.com");
//
//        UmengWxMiniComponent testOpenAPI = new UmengWxMiniComponent();
//        testOpenAPI.umengUminiGetShareUserList(apiExecutor);
//    }


//    //获取H5场景来源统计数据
//    public void umengUminiH5GetSceneOverview(ApiExecutor apiExecutor) {
//        UmengUminiH5GetSceneOverviewParam param = new UmengUminiH5GetSceneOverviewParam();
//        // 测试环境只支持http
//        // param.getOceanRequestPolicy().setUseHttps(false);
//        param.setDataSourceId("626b8dbcd024421570d8f084");
//        param.setFromDate("2022-11-10");
//        param.setToDate("2022-12-10");
//        param.setTimeUnit("30day");
//        param.setOrderBy("");
//        param.setDirection("");
//
//        try {
//            UmengUminiH5GetSceneOverviewResult result = apiExecutor.execute(param);
//            System.out.println(JSONObject.toJSONString(result));
//        } catch (OceanException e) {
//            System.out.println("errorCode=" + e.getErrorCode() + ", errorMessage=" + e.getErrorMessage());
//        }
//    }
//
//    //获取H5场景来源统计数据
//    public static void main(String[] args) {
//        // 请替换apiKey和apiSecurity
//        ApiExecutor apiExecutor = new ApiExecutor("8537907", "UZfST6nSjl");
//        apiExecutor.setServerHost("gateway.open.umeng.com");
//
//        UmengWxMiniComponent testOpenAPI = new UmengWxMiniComponent();
//        testOpenAPI.umengUminiH5GetSceneOverview(apiExecutor);
//    }
//
//
//    //获取应用的留存数据
//    public void umengUminiGetRetentionByDataSourceId(ApiExecutor apiExecutor) {
//        UmengUminiGetRetentionByDataSourceIdParam param = new UmengUminiGetRetentionByDataSourceIdParam();
//        // 测试环境只支持http
//        // param.getOceanRequestPolicy().setUseHttps(false);
//        param.setDataSourceId("626b8dbcd024421570d8f084");
//        param.setFromDate("2023-02-01");
//        param.setToDate("2023-03-01");
//        param.setTimeUnit("week");
//        param.setPageIndex(1);
//        param.setPageSize(10);
//        param.setIndicator("activeUser");
//        param.setValueType("rate");
//
//        try {
//            UmengUminiGetRetentionByDataSourceIdResult result = apiExecutor.execute(param);
//            System.out.println(JSONObject.toJSONString(result));
//        } catch (OceanException e) {
//            System.out.println("errorCode=" + e.getErrorCode() + ", errorMessage=" + e.getErrorMessage());
//        }
//    }
//
//    public static void main(String[] args) {
//        // 请替换apiKey和apiSecurity
//        ApiExecutor apiExecutor = new ApiExecutor("8537907", "UZfST6nSjl");
//        apiExecutor.setServerHost("gateway.open.umeng.com");
//
//        UmengWxMiniComponent testOpenAPI = new UmengWxMiniComponent();
//        testOpenAPI.umengUminiGetRetentionByDataSourceId(apiExecutor);
//    }
//
//
//    //获取H5曝光元素的属性的统计数据
//    public void umengUminiH5GetElementValueList(ApiExecutor apiExecutor) {
//        UmengUminiH5GetElementValueListParam param = new UmengUminiH5GetElementValueListParam();
//        // 测试环境只支持http
//        // param.getOceanRequestPolicy().setUseHttps(false);
//        param.setDataSourceId("626b8dbcd024421570d8f084");
//        param.setElementId("");
//        param.setTimeUnit("30day");
//        param.setFromDate("2022-11-10");
//        param.setToDate("2022-12-10");
//        param.setOrderBy("count");
//        param.setDirection("desc");
//        param.setPageIndex(1);
//        param.setPageSize(30);
//
//        try {
//            UmengUminiH5GetElementValueListResult result = apiExecutor.execute(param);
//            System.out.println(JSONObject.toJSONString(result));
//        } catch (OceanException e) {
//            System.out.println("errorCode=" + e.getErrorCode() + ", errorMessage=" + e.getErrorMessage());
//        }
//    }
//
//    //获取H5曝光元素统计数据
//    public void umengUminiH5GetElementList(ApiExecutor apiExecutor) {
//        UmengUminiH5GetElementListParam param = new UmengUminiH5GetElementListParam();
//        // 测试环境只支持http
//        // param.getOceanRequestPolicy().setUseHttps(false);
//        param.setDataSourceId("626b8dbcd024421570d8f084");
//        param.setTimeUnit("30day");
//        param.setFromDate("2022-11-10");
//        param.setToDate("2022-12-10");
//        param.setOrderBy("");
//        param.setDirection("");
//        param.setPageIndex(1);
//        param.setPageSize(30);
//
//        try {
//            UmengUminiH5GetElementListResult result = apiExecutor.execute(param);
//            System.out.println(JSONObject.toJSONString(result));
//        } catch (OceanException e) {
//            System.out.println("errorCode=" + e.getErrorCode() + ", errorMessage=" + e.getErrorMessage());
//        }
//    }


//    public void umengUminiGetAppList(ApiExecutor apiExecutor) {
//        UmengUminiGetAppListParam param = new UmengUminiGetAppListParam();
//        // 测试环境只支持http
//        // param.getOceanRequestPolicy().setUseHttps(false);
//        param.setPageIndex(1);
//        param.setPageSize(30);
//
//        try {
//            UmengUminiGetAppListResult result = apiExecutor.execute(param);
//            System.out.println(JSONObject.toJSONString(result));
//        } catch (OceanException e) {
//            System.out.println("errorCode=" + e.getErrorCode() + ", errorMessage=" + e.getErrorMessage());
//        }
//    }
//
//    //获取H5曝光元素统计数据
//    public static void main(String[] args) {
//        // 请替换apiKey和apiSecurity
//        ApiExecutor apiExecutor = new ApiExecutor("8537907", "UZfST6nSjl");
//        apiExecutor.setServerHost("gateway.open.umeng.com");
//
//        UmengWxMiniComponent testOpenAPI = new UmengWxMiniComponent();
//        testOpenAPI.umengUminiH5GetElementList(apiExecutor);
//    }


 /*   //获取H5曝光元素的属性的统计数据
    public static void main(String[] args) {
        // 请替换apiKey和apiSecurity
        ApiExecutor apiExecutor = new ApiExecutor("8537907", "UZfST6nSjl");
        apiExecutor.setServerHost("gateway.open.umeng.com");

        UmengWxMiniComponent testOpenAPI = new UmengWxMiniComponent();
        testOpenAPI.umengUminiH5GetElementValueList(apiExecutor);
    }
*/

//    public static void main(String[] args) {
//        // 请替换apiKey和apiSecurity
//        ApiExecutor apiExecutor = new ApiExecutor("8537907", "UZfST6nSjl");
//        apiExecutor.setServerHost("gateway.open.umeng.com");
//
//        UmengWxMiniComponent testOpenAPI = new UmengWxMiniComponent();
//        testOpenAPI.umengUminiGetAppList(apiExecutor);
//    }


//
//
//    public void sendRequest(String interf) {
//        String method = "POST";
//        UmengUminiGetAppListParam param = new UmengUminiGetAppListParam();
//        Map<String, String> headers = new HashMap<String, String>();
//        //最后在header中的格式
//        headers.put("Authorization", "APPCODE " + appcode);
//        //根据API的要求，定义相对应的Content-Type
//        headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
//        Map<String, String> querys = new HashMap<String, String>();
//        Map<String, String> bodys = new HashMap<String, String>();
//        bodys.put("content",  "code:"+code+"");
//        bodys.put("phone_number", phone);
//        bodys.put("template_id", "TPL_0000");
//
//
//        try {
//            /**
//             * 重要提示如下:
//             * HttpUtils请从
//             * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/src/main/java/com/aliyun/api/gateway/demo/util/HttpUtils.java
//             * 下载
//             *
//             * 相应的依赖请参照
//             * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/pom.xml
//             */
//            HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
//            System.out.println(response.toString());
//            //获取response的body
//            //System.out.println(EntityUtils.toString(response.getEntity()));
//        } catch (Exception e) {
//            e.printStackTrace();
//        }

//        String method = "GET";
//        Map<String, String> headers = new HashMap<String, String>();
//        //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
//        headers.put("Authorization", "APPCODE " + appcode);
//        Map<String, String> querys = new HashMap<String, String>();
//        querys.put("code", code);
//        querys.put("phone", phone);
//        querys.put("skin", skin);
//        querys.put("sign", sign);
//        //JDK 1.8示例代码请在这里下载：  http://code.fegine.com/Tools.zip
//        try {
//            /**
//             * 重要提示如下:
//             * HttpUtils请从
//             * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/src/main/java/com/aliyun/api/gateway/demo/util/HttpUtils.java
//             * 或者直接下载：
//             * http://code.fegine.com/HttpUtils.zip
//             * 下载
//             *
//             * 相应的依赖请参照
//             * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/pom.xml
//             * 相关jar包（非pom）直接下载：
//             * http://code.fegine.com/aliyun-jar.zip
//             */
//            HttpResponse response = HttpUtils.doGet(host, path, method, headers, querys);
//            //System.out.println(response.toString());如不输出json, 请打开这行代码，打印调试头部状态码。
//            //状态码: 200 正常；400 URL无效；401 appCode错误； 403 次数用完； 500 API网管错误
//            //获取response的body
//            System.out.println(EntityUtils.toString(response.getEntity()));
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
    }

